function exampleFunction() {
  var localVar = "我在函数内部";
  console.log(localVar); // 输出：我在函数内部
}

exampleFunction();
// console.log(localVar); // 错误：localVar未定义

// function aa(){

// }
// let bb=function(){

// }

// const cc=()=>{

// }

// 函数判断数据类型
function checkType(obj) {
  let type = typeof obj;
  if (type !== "object") {
    return type;
  } else {
    return Object.prototype.toString.call(obj);
  }
}
// console.log(checkType(1));
// console.log(checkType("1"));
// console.log(checkType([1,2,3]));
// console.log(checkType(/abc/));
// console.log(checkType(false));
// console.log(checkType({"name":"tome","age":16}));

// 原型与原型链
// function Person(name,age){
//     this.name=name;
//     this.age=age

// }
// const Tom=new Person('Tom',19)
// console.log(Tom.name);
// console.log("Tom.__proto__",Tom.__proto__);
// console.log("Person's prototype",Person.prototype);

// console.log("js弱变量类型转换,布尔",!!"Hello");
// var a=''+1;
// console.log(`js弱变量类型转换,字符串 a=''+${1}`,typeof a);
// var b="Hello"*1
// console.log(`js弱变量类型转换,属猪 "hello"/1`,typeof b);

// 实现一个sleep
// function sleep(delay){
//     var start=(new Date()).getTime();
//     while((new Date()).getTime()-start<delay){
//         continue;
//     }
// }
// console.log("111");
// sleep(3000)
// console.log("222");

// 定义一个数字数组
let numbers = [4, 2, 9, 1, 5, 6];

// 使用 sort() 方法进行排序，传入一个比较函数
numbers.sort((a, b) => {
  return a - b; // 升序排序
});

// 输出排序后的数组
console.log(numbers); // [1, 2, 4, 5, 6, 9]

// 取出数组中最大的值
// var arr = [3, 5, 8, 1];
// // ES5 方式
// console.log(Math.max.apply(null, arr)); // 8
// // ES6 方式
// console.log(Math.max(...arr)); // 8

// // ES5 方式
// console.log(Math.min.apply(null, arr)); // 8
// // ES6 方式
// console.log(Math.min(...arr)); // 8

// 测试执行顺序
console.log("1"); // 同步任务

setTimeout(() => {
  console.log("2"); // 宏任务
}, 0);

Promise.resolve().then(() => {
  console.log("3"); // 微任务
});

async function asyncFuncWithPendingPromise() {
  console.log("4"); // 同步任务（在 async 函数内部）
  await new Promise((resolve) => setTimeout(resolve, 0)); // 等待一个稍后解决的 Promise（创建一个宏任务）
  console.log("5"); // 同步任务（在 await 之后）
}

asyncFuncWithPendingPromise();

console.log("6"); // 同步任务（在 async 函数调用之后）

// 假设这里还有一个微任务队列的示例，但由于 asyncFunc 中没有返回 Promise 或创建新的微任务（除了 await 导致的暂停），
// 所以我们不会看到额外的微任务影响。不过，为了完整性，我们可以添加一个。
Promise.resolve().then(() => {
  console.log("7"); // 微任务（在 async 函数调用之后添加）
});
